home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr26 / netprog.zip / NETPROG.TAR / ipc / sub_mesgmsgq.c < prev    next >
C/C++ Source or Header  |  1989-12-17  |  1KB  |  47 lines

  1. #include    "mesg.h"
  2.  
  3. /*
  4.  * Send a message using the System V message queues.
  5.  * The mesg_len, mesg_type and mesg_data fields must be filled
  6.  * in by the caller.
  7.  */
  8.  
  9. mesg_send(id, mesgptr)
  10. int    id;        /* really an msqid from msgget() */
  11. Mesg    *mesgptr;
  12. {
  13.     /*
  14.      * Send the message - the type followed by the optional data.
  15.      */
  16.  
  17.     if (msgsnd(id, (char *) &(mesgptr->mesg_type),
  18.                     mesgptr->mesg_len, 0) != 0)
  19.         err_sys("msgsnd error");
  20. }
  21.  
  22. /*
  23.  * Receive a message from a System V message queue.
  24.  * The caller must fill in the mesg_type field with the desired type.
  25.  * Return the number of bytes in the data portion of the message.
  26.  * A 0-length data message implies end-of-file.
  27.  */
  28.  
  29. int
  30. mesg_recv(id, mesgptr)
  31. int    id;        /* really an msqid from msgget() */
  32. Mesg    *mesgptr;
  33. {
  34.     int    n;
  35.  
  36.     /*
  37.      * Read the first message on the queue of the specified type.
  38.      */
  39.  
  40.     n = msgrcv(id, (char *) &(mesgptr->mesg_type), MAXMESGDATA,
  41.                     mesgptr->mesg_type, 0);
  42.     if ( (mesgptr->mesg_len = n) < 0)
  43.         err_dump("msgrcv error");
  44.  
  45.     return(n);        /* n will be 0 at end of file */
  46. }
  47.